/**在 JavaScript 中，Generator（生成器）是一种特殊的函数，允许函数的执行过程可以被暂停和恢复，
 * 并可以按需返回多个值。它提供了一种更灵活的方式来控制函数的执行。
 *  1.Generator函数使用 function* 语法定义。
 *  2.暂停和恢复 通过 yield 关键字实现。
 *  3.调用generator函数会返回一个生成器（特殊迭代器），可以使用.next() 方法逐步执行。
 *
 * */

function* generator() {
  console.log(1)
  const second = yield'2'
  console.log(2, second)
  const third = yield'3'
  console.log(3, third)
  return '4'
}

const g = generator()

// g.throw(new Error('error'))
// const g1 = g.next()
// const g2 = g.return('next2')
// console.log(g2)
// const g3 = g.next('next3')
// const g4 = g.next()


// const info = {
//   name: 'hi',
//   age: 19,
//   * [Symbol.iterator]() {
//     const list = Object.values(this)
//     for (let i = 0; i < list.length; i++) {
//       yield list[i]
//     }
//   }
// }

const info = {
  name: 'hi',
  age: 19,
  * [Symbol.iterator]() {
    yield*Object.values(this)
  }
}

for(const item of info){
  console.log(item)
}
